# 应用程序体系结构
- 客户-服务器体系结构(client-server)
- P2P体系结构/对等体系结构(Peer to Peer)
# 进程通信
客户与服务进程:应用程序是运行在操作系统上的一个个进程,因此进行通信的实际上是进程。对于给定的一对进程,将发起通信的进程标识为客户进程,等待联系的标识为服务器进程
套接字(socket):主机内应用层与运输层之间的接口,进程通过 socket 向网络发送和从网络接收报文。应用程序的开发者对于运输层的控制仅限于:(1)选择运输层的协议;(2)设置有限的运输层参数。确定协议后,应用程序建立在由该协议提供的运输层服务之上
进程寻址:为了标识一个进程,需要两种信息:(1)主机的地址;(2)主机中进程的标识符。因特网中,主机地址由 IP 地址标识,主机中的进程则通过端口号(port)标识
# 可以使用的运输层服务
当选择不同的运输层协议时,运输层可以向应用程序提供不同的服务,这些服务大致可以分为以下几类,针对于应用程序是否可以容忍数据丢失,带宽是否弹性,时间是否敏感,安全性要求如何
1. 可靠数据传输:分组在计算机网络中存在丢失可能,如果协议能够确保由应用程序一端发送的数据正确、完全地交付给应用程序的另一端,则称该协议提供了可靠数据传输
2. 吞吐量:要求运输层协议能够以某种特定的速率,如 r 比特/秒,提供确保的可用吞吐量(可用吞吐量:发送进程能够向接收进程交付比特的速率)
3. 定时:要求运输层协议能够提供定时的保证,定时保证能以多种形式实现,如每个比特到达接收方的套接字的延迟不高于 100 ms
4. 安全性:要求运输协议能够为应用程序提供一种或多种安全性服务,如加密发送进程传输的所有数据,并在解密后交付接收进程
# 因特网提供的运输服务
- TCP服务(P71)
- UDP服务
# 应用层协议
应用层协议定义了运行在不同主机上的应用程序进程如何相互传递报文,定义了
- 报文类型,如请求报文,响应报文
- 各种报文类型的语法,如报文中的各个字段,及字段是如何描述的
- 字段的语义,即字段中包含的信息的含义
- 进程何时以及如何发送报文,如何对报文进行响应